home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 109 / EnigmaAmiga109CD.iso / dalla rivista / host contacted / imengv3.41p2.lha / ImEngV3.41p2 / Extra / DOpus5 / arexx / IE_Convert.dopus5 < prev    next >
Text File  |  1996-08-18  |  6KB  |  203 lines

  1. /*
  2. ** $VER: IE_Convert.dopus5 1.1 (17/8 Stockholm/Sweden)
  3. ** Copyright © 1996 by Patrik M Nydensten 
  4. **
  5. ** Converts all selected image files in the SRCE directory and
  6. ** saves them into DEST directory.
  7. ** Requires Image Engineer 3.0 or higher and DOpus 5.0 or higher.
  8. ** Call: (AREXX) DOpus5:arexx/IE_Convert.dopus5 {Qp}
  9. */
  10.  
  11. CFG_PALETTE_DIR = '"IE:Palettes/"'
  12.  
  13. options results
  14. signal on syntax
  15. lf='0a'x
  16.  
  17. parse arg portname
  18. if left(portname,5)='DOPUS' then address value portname
  19. else exit
  20.  
  21. if ~show(ports,'IMAGEENGINEER') then do
  22.      dopus request '"Could not locate IEs arexx port!" OK'
  23.   exit                 
  24. end                 
  25.  
  26. /* Get info from DOpus */
  27.  
  28. lister query source                /* get source handler */
  29. parse var result handle nil
  30. if RC~= 0 then exit
  31.  
  32. lister query dest                  /* get destination handler */
  33. parse var result dhandle nil
  34. if RC~= 0 then do
  35.   dopus request '"No DEST directory selected!" OK'
  36.   exit
  37. end
  38.  
  39. lister query handle path           /* get current source path */
  40. src_path = strip(result,B,'"')
  41.  
  42. lister query dhandle path           /* get current dest path */
  43. dst_path = strip(result,B,'"')
  44.  
  45. lister query handle selfiles ':'   /* get selected file names */
  46. sel_files = result
  47.  
  48. lister query handle numselfiles    /* get number of selected files */
  49. num_files = result
  50. if num_files = 0 then exit
  51.  
  52. /* Get info from IE */
  53.  
  54. address 'IMAGEENGINEER'
  55.  
  56. IE_TO_FRONT
  57.  
  58. 'GET_FILE_TYPE "Select destination file format."'
  59. if RC~= 0 then do
  60.   address value portname
  61.   dopus front
  62.   dopus request '"User did not select file type!" OK'
  63.   exit
  64. end
  65. else FileType = result
  66.  
  67. 'REQUEST' '"Would you like to save rendered or 24bit image?"' '" Render | 24bit "'
  68. do_render = result
  69.  
  70. if do_render = 1 then do /* get render info */
  71.   'RENDER_GET "Set render options."'
  72.   if RC~= 0 then do
  73.     address value portname
  74.     dopus front
  75.     dopus request '"User did not select render options!" OK'
  76.     exit
  77.   end
  78.   else RenderOptions = result
  79.  
  80.   if word(RenderOptions,5) = 0 then do  /* let user pick lock-palette */
  81.     'GET_FILE "Select a palette to lock." "Lock"' CFG_PALETTE_DIR
  82.     if RC~= 0 then do
  83.       address value portname
  84.       dopus front
  85.       dopus request '"User did not select lock-palette!" OK'
  86.       exit
  87.     end
  88.     else do_palette = result
  89.   end /* end of pick lock-palette */
  90. end  /* end of get render info */
  91.  
  92. /* Start process */
  93.  
  94. address value portname
  95.  
  96. dopus front
  97.  
  98. lister set handle progress num_files 'Converting images...'
  99.  
  100. do i = 1 to num_files  /* convert loop */
  101.  
  102.   address value portname
  103.  
  104.   parse var sel_files image_file ':' sel_files
  105.   image_file = strip(image_file,B,'"')
  106.  
  107.   lister set handle progress name image_file  /* update progress display */
  108.   lister query handle abort                   /* check if aborted */
  109.   if result then do
  110.     lister clear handle progress  /* exit progress display mode */
  111.     lister refresh handle 'full'
  112.     lister refresh dhandle 'full'
  113.     lister read dhandle '"'||dst_path||'"' force
  114.     dopus front
  115.     dopus request '"User aborted..." OK'
  116.     lister clear handle abort
  117.     exit
  118.   end
  119.  
  120.   nil = convert(image_file)
  121.  
  122.   address value portname
  123.   lister set handle progress count i    /* update progress display */
  124.   lister refresh handle full            /* update lister display */
  125.  
  126. end  /* end of load loop */
  127.  
  128. lister clear handle progress        /* exits progress display mode */
  129. lister refresh handle 'full'        /* update source */
  130. lister refresh dhandle 'full'       /* update dest */
  131. lister read dhandle '"'||dst_path||'"' force
  132.  
  133. dopus front
  134.  
  135. exit
  136.  
  137. Convert:
  138.   parse arg file
  139.   address 'IMAGEENGINEER'                                               
  140.  
  141.   file_ext = '.'||word(strip(filetype),1)
  142.  
  143.   'OPEN "'||src_path||file||'" 24'
  144.   if (RC ~= 0) then do
  145.     address value portname
  146.     dopus request '"Error when loading image' file '!" OK'
  147.   end
  148.   else do
  149.     Project = result
  150.  
  151.     if do_render = 1 then do  /* render image */
  152.       if do_palette~='DO_PALETTE' then do
  153.         'PALETTE_LOAD' Project '"'do_palette'"'
  154.         if (RC ~= 0) then do
  155.           address value portname
  156.           dopus request '"Error when loading lock-palette:'||lf||do_palette||lf||'Processing image anyway." OK'
  157.           address 'IMAGEENGINEER'
  158.         end
  159.       end
  160.       'RENDER_SET' Project RenderOptions
  161.       'RENDER' Project 'QUIET'
  162.  
  163.       'SAVE' Project '"'||dst_path||file||file_ext||'"' '"'||filetype||'"'
  164.       if (RC ~= 0) then do
  165.         address value portname
  166.         dopus request '"Error when saving image' file '!" OK'
  167.         address 'IMAGEENGINEER'
  168.       end
  169.       else do
  170.         address value portname
  171.         lister select handle '"'||image_file||'"' off
  172.       end
  173.     end
  174.     else do  /* do not render image */
  175.       'SAVE_DATA' Project '"'||dst_path||file||file_ext||'"' '"'||filetype||'"'
  176.       if (RC ~= 0) then do
  177.         address value portname
  178.         dopus request '"Error when saving image' file '!" OK'
  179.         address 'IMAGEENGINEER'
  180.       end
  181.       else do
  182.         address value portname
  183.         lister select handle '"'||image_file||'"' off
  184.       end
  185.     end
  186.     
  187.     address 'IMAGEENGINEER'
  188.     'CLOSE' Project
  189.   end
  190.  
  191. return nil                                                           
  192.  
  193. Syntax:
  194.   syntax_rc = rc
  195.   lister clear handle progress        /* exits progress display mode */
  196.   lister refresh handle 'full'        /* update source */
  197.   lister refresh dhandle 'full'       /* update dest */
  198.   lister read dhandle '"'||dst_path||'"' force
  199.   dopus front
  200.   dopus request '"Internal error on line' SIGL || lf || 'Error:' syntax_rc errortext(syntax_rc) '" OK'
  201.   exit
  202. return 0
  203.